FM IoO simulator

(Notebook version: 1.0 Initial - 2021 05 08)

The main goal of this notebook is to implement a simple, easy to use simulation tool to simulate FM signals for passive radar purposes. In the current state of the notebook and the provided API the generated FM signal is not compatible with the "ITU BS.450: Transmission standards for FM sound broadcasting at VHF" [1] recommendation. The implementation of this standard is a later task of this work.

In the most simple case an FM modulated broadcast signal can be generated as follows:

$$s(t) = sin \left(2 \pi f_c t - 2 \pi k_{fm} \int_0^t{s_{mod}(\tau)} d\tau \right),$$

where $f_c$ is the carrier frequency and $s_{mod}(t)$ is modulating signal. The frequency deviation is defined as $f_d = k_{fm} max\{s_m(t) \}$, which is $75 kHz$ in the standardized FM broadcast stations.

To prepare the simulated data digitally we also need the discrete time version of the above defined signal. $$s[n] = sin \left(2 \pi \frac{f_c}{f_s} n - 2 \pi \frac{k_{fm}}{f_s} \sum_{m=0}^n{s_{mod}[m]} \right),$$

2.1 Simple FM signal example

In the few next code section let us generates an FM signal with a symetrical square wave modulating signal.

Let us inspect the spectrum of the generated FM signal.

2.2 Real FM broadcast signal

In the following code sections let us generate a real world FM signal. For this we are going to use an imported music file whhich will be the modulating signal. For the algorithm development the first sound file will be a simple 1kHz sinusoid.

Let us check that the importing is working properly.

To create the simulation we are going to cut out a signal portion from the full imported signal array. This cropped signal will has the same length as the simulation has.

At this point we have to take into consideration the required bandwidth of the simulated signal and the sampling frequencies as well. The FM broadcast signal has a frequecy deviation of $f_d = 75 kHZ$. According to Carson's formula: $$ B = 2\left(f_D+max\{f_m\}\right),$$ where $B$ is the FM signal bandwidth and $f_m$ is the modulating frequency. Considering that the maximum useful frequency of a sound wave is less than $20 kHz$, $f_m \leq 20 kHz$. Thus, $$B \leq 200 kHz$$

According to the Nyquist sampling theory the sampling frequency of the modulated signal should be at least $400 kHz$. $f_{s,FM} \geq 2B$. In order to work with a common sample rate when simulating the FM signal, we have to upsample the imported signal. $$ P f_{s, imp} = f_{s,FM},$$ where $K$ is the upsampling ratio, $f_{s, imp}$ is the sampling rate of the imported modulating signal.

Let us generate now the baseband modulated signal

2.2.1 Real FM Signal Ambiguity Function

Let us now inspect the monostatic ambiguity function of the generated FM signal. For this, we are going to use the pyapril library.

The following cell wraps the above developed scripts into a single function, so we can generate and analyze FM signals in a more convinient way.

3. Ambiguity Function of Typical Signals

In this section we are going to calculate and display the ambiguity function of some typical FM signal, such as:

The total simulation time for all the diferent modulating singal types will be $T_{sim} = 1s$. Accordingly the maximum achvieable coherent processing gain is $G_{proc} \leq BT \simeq 200 kHz ~ 1s \rightarrow 53 dB$. Based on this rough estimation the dynamic range of the ambiguity functions plots are constrainted to $55 dB$ to highlight the relevant features of the signals.

3.1 Sine Wave

3.2 Symmetrical Square Wave

3.3 FSK (Frequency Shift Keying) with random data

3.4 Gaussian noise

3.5 Classical Music - Für Elise (Piano version)

3.6 Rock Music - ACDC

3.7 Speech

4. Implementations in PyAPRiL

The above prepared functions are available in the pyapril package as well from version 1.7 [2].

References